C++类基本--随笔一
#include <iostream>
using namespace std;
class Teacher
{
public:
Teacher(int m=3,int n=2)
{
a=m;
b=n;
}
void show(); protected:
int a;
int b;
}; void Teacher::show()
{
cout<<a<<endl;
}
int main()
{
Teacher qin;//此处初始化没有参数,可以,是因为有了默认的
qin.show();
return 0;
}
void run(test *p)//利用指针调用
{
cout<<p->rp(100)<<endl;
}
void run(test &p)//利用引用
{
cout<<p.rp(200)<<endl;
}
int main()
{
test a;
run(&a);//指针 用&a
run(a);// 引用,直接a
cin.get();
}
有本书叫 一个月挑战C++,可以下个chm版本来看!
#include <iostream>
using namespace std; class ballscore { protected: const static int gbs = 5;//好球单位得分 原先C++ 11前,是不能再类中定义变量初始化的,只能const static ,现在无此限制了 const static int bbs = -3;//坏球单位扣分 float gradescore;//平均成绩 public: float GetGS(float goodball,float badball) //goodball为好球数量,badball为坏求数量
{ int gradescore=0; //新定义一个和成员变量float gradescore相同名字的类成员函数局部变量
ballscore::gradescore = (goodball*gbs + badball*bbs) / (goodball + badball); //由于局部变量与类成员变量同名使用的时候必须在其前加上类名和域区分符
return ballscore::gradescore;//返回平均成绩
}
};
int ballscore=0;//定义一个与类名称相同的普通全局变量
int test;
void main()
{
class test//局部类的创建
{
float a;
float b;
};
test test;
::test=1; //由于局部类名隐藏了外部变量使用需加域区分符
class ballscore jeff; //由于全局变量int ballsocre和类(ballsocre)名称相同,隐藏了类名称,这时候定义类对象需加class前缀以区分
cout<<jeff.GetGS(10,3);
cin.get();
}
- director = new char[10]; strcpy(director,"王大力"); //director = new string; // *director="王大力";//string情况赋值
- class Student { public: Student() { number = 1; score = 100; } void show(); protected: int number; int score; Teacher teacher("王大力");//错误,一个类的成员如果是另外一个类的对象的话,不能在类中使用带参数的构造函数进行初始化 };
类成员的构造是按照在类中定义的顺序进行的,而不是按照构造函数说明后的冒号顺序进行构造的,这一点需要记住! 如下:
#include <iostream>
using namespace std; class Test
{
public:
Test(int j):pb(j),pa(pb+5)
{ }
public:
int pa;
int pb;
};
void main()
{
Test a(10);
cout<<a.pa<<endl;
cout<<a.pb<<endl;
cin.get();
}
pa并没有得到我们所希望的15而是一个随机的任意地址的值。
#include <iostream>
#include <string>
using namespace std; class Test
{
public:
Test(int a)
{
kk=a;
cout<<"构造参数a:"<<a<<endl;
}
public:
int kk;
}; void fun_t(int n)
{
static Test a(n);
//static Test a=n;//这么写也是对的
cout<<"函数传入参数n:"<<n<<endl;
cout<<"对象a的属性kk的值:"<<a.kk<<endl;
}
Test m(100);
Test n(66);
void main()
{
fun_t(20);
fun_t(30);
cin.get();
}
c++规定,所有的全局对象和全局变量一样都在主函数main()之前被构造,函数体内的静态对象则只构造一次,也就是说只在首次进入这个函数的时候进行构造!,所以上面运行结果:
构造参数a:100
构造参数a:66
构造参数a:20
函数传入参数n:20
对象a的属性kk的值:20
####构造参数a:30###没有这一句,
函数传入参数n:30
对象a的属性kk的值:20
int main()
{
Internet a("中国软件开发实验室","www.cndev-lab.com");
Internet b = a;
cout<<"==========="<<endl;
b.show();
test(b);
} //运行结果如下:, 也就是Internet b=a;时有copy构造,而实际应用时也有!

int main()
{
Internet a("中国软件开发实验室","www.cndev-lab.com");
cout<<"1111111\n";
Internet b = a;
cout<<"22222\n";
b.show();
cout<<"33333\n";
test(b);
cout<<"44444\n";
} //运行结果如下:开始没有444的输出,敲回车时才会出现...

C++类基本--随笔一的更多相关文章
- C++类基本--随笔二
1 #include <iostream> 2 #include <string.h> 3 using namespace std; 4 5 class Internet 6 ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- </2017><2018>
>>> Blog 随笔原始文档及源代码 -> github: https://github.com/StackLike/Python_Note >>> 统计信 ...
- Java 的 IO 流
接着上一篇的 “Java 的 File 类” 的随笔,在File类的基础上,我们就走进Java的IO流吧. 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在 ...
- Windows提权小结
摸鱼的时候,想想内网这部分还有什么地方适合水一下,翻翻往期,开始填坑 总结一下Windows提权的部分,以后有时间再补一下Linux提权 这仍然是一篇思路总结类的随笔,具体细节内容不展开,也展开不了. ...
- Scala学习随笔——深入类和对象
函数化对象(又称方程化对象)指的是所定义的类或对象不包含任何可以修改的状态. 本篇随笔就是着重记录函数化对象.定义了一个有理数类定义的几个不同版本,以介绍 Scala 类定义的几个特性:类参数和构造函 ...
- PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件外观展示类属性elideMode、documentMode、tabBarAutoHide、tabShape介绍
QTabWidget的外观展示类属性包括tabPosition.tabShape.elideMode.usesScrollButtons.documentMode.tabBarAutoHide和ico ...
- PyQt学习随笔:Model/View开发时从Model相关类派生自定义类需要注意的问题
在<PyQt学习随笔:重写setData方法截获Model/View中视图数据项编辑的注意事项>介绍的方法,从Model相关类派生自定义类,通过重写setData方法以获取View中数据的 ...
- PyQt学习随笔:通过自定义类重写QApplication的notify方法捕获应用的所有消息
PyQt程序通过调用QApplication类的exec_()(sys.exit(app.exec_()) 进入程序主循环,开始处理事件,它从事件队列中获取本地窗口系统事件,将它们转化为 QEvent ...
随机推荐
- mysql8.0.x中datasource信息
driverClassName: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql:// ...
- C++把数字排序
C++把数字排序 描述 思路 代码 描述 如题,详细如下: 输入不超过1024个数字,以特殊数字结尾,如(-999),把数字从小到大排序. 思路 目前,我们有两种思路可以写: 1是 在输入的时候,排序 ...
- JVM 源码分析(二):搭建 JDK 8 源码调试环境(Windows 上使用 CLion)
前言 一.准备源码 二.安装 "Bootstrap JDK" 三.配置编译环境 四.编译与测试 五.安装 CMake 和 GDB 五.准备远程调试 六.开始远程调试 前言 上一篇文 ...
- 万万没想到,JVM内存区域的面试题也可以问的这么难?
二.Java内存区域 1.Java内存结构 内存结构 程序计数器 当前线程所执行字节码的行号指示器.若当前方法是native的,那么程序计数器的值就是undefined. 线程私有,Java内存区域中 ...
- 使用vs code搭建Q#开发环境 (Mac)
Q# 是微软几年前发布的一门用于模拟量子编程的语言. 3年前我在当时风靡的博客网站 ITEYE 上发布过如何在windows上搭建其开发环境:Q#开发环境搭建.时过境迁,不但iteye不知何处去,连Q ...
- LeetCode394 字符串解码
给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数. 你可 ...
- 【Linux】tcpdump
tcpdump介绍 tcpdump 是一个运行在命令行下的抓包工具.它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包.tcpdump 适用于 大多数的类Unix系统操作系统 ...
- LeetCode559.N 叉树的最大深度
题目 法一.层序遍历 1 class Solution { 2 public: 3 int maxDepth(Node* root) { 4 if(root== NULL) return 0; 5 q ...
- gears-绕过rbash
0x00 信息收集 0x01 smb攻击 crunch 生成密码的一个软件 @%%,这个是给的密码参数. crunch 4 4 -t @%%, -o words 最小4位,最长 4位 fcrackzi ...
- 运行.bat执行sql文件 —— mysql
参考地址:https://www.cnblogs.com/dingjiaoyang/p/9990188.html 运行test.bat 执行 test.sql文件 test.bat: @ECHO OF ...