![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++类
C++
weixin_46060711
c/c++
展开
-
子类型的作用与应用,以及子类型在QT中 QSystemTrayIcon类的构造函数中的使用
一,子类型的作用:在需要父类对象的任何地方, 可以使用”公有派生”的子类的对象来替代,从而可以使用相同的函数统一处理基类对象和公有派生类对象即:形参为基类对象时,实参可以是派生类对象#include <iostream>#include <sstream>using namespace std;class Father {public: void play() { cout << "KTV唱歌!" << endl; }};cl原创 2022-04-03 09:47:50 · 227 阅读 · 0 评论 -
protected(保护)访问权限
一个类, 如果希望, 它的成员, 可以被自己的子类(派生类)直接访问,但是, 又不想被外部访问那么就可以把这些成员, 定义为 protected访问权限!!!访问权限总结:1.public外部(指对象)可以直接访问.可以通过对象来访问这个成员Fahter wjl(“王健林”, 65);wjl.getName();2.private外部(指对象)不可以访问自己的成员函数内, 可以访问Fahter wjl(“王健林”, 65);wjl.name; // 错误!!!Father内的所原创 2022-04-03 09:34:23 · 6192 阅读 · 1 评论 -
子类对父类成员的访问权限
无论通过什么方式(public、protected、private)继承,在子类内部均可访问父类中的public、protected成员,但private成员不可访问(如果想要子类能够访问,就定义为protected)继承方式只影响外界(指对象)通过子类对父类成员的访问权限。public继承,父类成员的访问权限全部保留至子类;protected继承,父类public成员的访问权限在子类中降至protected;private继承,父类public、protected成员的访问权限在子类中均降至pri原创 2022-04-03 09:25:20 · 3536 阅读 · 0 评论 -
子类中有多个对象,(1)构建子类对象时,构造函数调用的先后顺序;(2)程序执行结束时,析构函数调用的先后顺序
#include <iostream>using namespace std;class M {public: M() { cout << __FUNCTION__ << endl; } ~M() { cout << __FUNCTION__ << endl; }};class N {public: N() { cout << __FUNCTION__ << endl; } ~N() { cout原创 2022-04-03 09:08:28 · 1000 阅读 · 0 评论 -
vector的陷阱
代码示例:#include <iostream>#include <vector>using namespace std;class Man {public: Man() {} void getPlay() { //玩一次喝十杯酒 count += 10; cout << "I'm playing..." << endl; } int getCount() { return count; }private: int原创 2022-01-24 16:28:32 · 410 阅读 · 0 评论 -
vector容器的使用
使用vector容器时,需要使用头文件#include vector<int> data; //相当于定义了一个变量名为data,且空间可变的数组 data.push_back(1); //赋值时要在尾部插入,相当于data[0] = 1; data.push_back(5); //相当于data[1] = 5; for (int i = 0; i < data.size(); i++) { cout << data[i] << " "; }原创 2022-01-23 10:18:17 · 657 阅读 · 0 评论 -
const数据成员的初始化;const成员函数;const对象与非const对象
一,const数据成员的初始化方式:1.使用类内值(C++11支持)2.使用构造函数的初始化列表(如果同时使用这两种方式,以初始化列表中的值为最终初始化结果)注意: 不能在构造函数或其他成员函数内,对const成员赋值!对于非const的类静态成员,只能在类的实现文件中初始化。const类静态成员,可以在类内设置初始值,也可以在类的实现文件中设置初始值。(但是不要同时在这两个地方初始化,只能初始化1次)详细内容请看另一篇博客《静态数据成员与静态成员函数》类内初始值:所在文件:Human.h原创 2022-01-02 15:10:25 · 2385 阅读 · 0 评论 -
静态数据成员与静态成员函数
需求分析:需要获取总的人数,如何实现?只能使用一个全局变量,然后在构造函数中对这个全局变量进行修改(加1)缺点:使用全局变量不方便,破坏程序的封装性。解决方案:使用类的静态成员。头文件:Human.hclass Human {public: ......int getCount();private: string name = "Unknown"; int age = 28; ...... // 类的静态成员 static int count;};初始化类中的静态成员原创 2022-01-01 18:34:08 · 1356 阅读 · 0 评论 -
清理工作之析构函数
析构函数作用:对象销毁前,做清理工作。具体的清理工作,一般和构造函数对应比如:如果在构造函数中,使用new分配了内存,就需在析构函数中用delete释放。如果构造函数中没有申请资源(主要是内存资源),那么很少使用析构函数。函数名:~类型没有返回值,没有参数,最多只能有一个析构函数访问权限:一般都使用public使用方法:不能主动调用。对象销毁时,自动调用。如果不定义,编译器会自动生成一个析构函数(什么也不做)#include <iostream>#include原创 2021-12-31 22:26:34 · 242 阅读 · 0 评论 -
赋值构造函数
赋值构造函数:一,编译器自动合成的构造函数二,自定义的赋值构造函数一,编译器自动合成的构造函数#include <iostream>#include <string>using namespace std;#define ADDR_LEN 64//定义“人类”class Human {public: Human(); //构造函数,可以写在类里面(由内联函数的效果),也可以写在外面 // =运算符的重载 //Human& operator=原创 2021-12-31 20:05:44 · 1669 阅读 · 0 评论 -
什么时候调用拷贝构造函数
什么时候调用拷贝构造函数:1.调用函数时,实参是对象,形参不是引用类型如果函数的形参是引用类型,就不会调用拷贝构造函数2.函数的返回类型是类,而且不是引用类型3.对象数组的初始化列表中,使用对象。第一种 调用函数时,实参是对象,形参不是引用类型#include <iostream>#include <string>using namespace std;#define ADDR_LEN 64//定义“人类”class Human {public: H原创 2021-12-31 18:02:20 · 872 阅读 · 0 评论 -
拷贝构造函数
拷贝构造函数:一,合成的拷贝构造函数二,自定义的拷贝构造函数一,合成的拷贝构造函数#include <iostream>#include <string>using namespace std;#define ADDR_LEN 64//定义“人类”class Human {public: Human(); //构造函数,可以写在类里面(由内联函数的效果),也可以写在外面 Human(int age, int salary); void eat();原创 2021-12-31 16:07:33 · 502 阅读 · 0 评论 -
自定义的重载构造函数
自定义的重载构造函数:就是自定义的构造函数,一个意思#include <iostream>#include <string>using namespace std;//定义“人类”class Human {public: //公有的, 公共的 //void eat() { //直接在类里面写函数的内容,这样的函数叫做内联函数 //...//} Human(); //构造函数,可以写在类里面(由内联函数的效果),也可以写在外面 Human(int ag原创 2021-12-30 21:57:59 · 484 阅读 · 0 评论 -
默认构造函数
默认构造函数:没有参数的构造函数,称为默认构造函数。1.合成的默认构造函数但没有手动定义默认构造函数时,编译器自动为这个类定义一个构造函数。1)如果数据成员使用了“类内初始值”,就使用这个值来初始化数据成员。【C++11】2)否则,就使用默认初始化(实际上,不做任何初始化)#include <iostream>#include <string>#include <Windows.h>using namespace std;//定义“人类”clas原创 2021-12-30 21:26:28 · 3138 阅读 · 0 评论 -
构造函数的作用,特点, 种类
一,构造函数的作用在创建一个新的对象时,自动调用的函数,用来进行“初始化”工作:对这个对象内部的数据成员进行初始化。二,构造函数的特点1)自动调用(在创建新对象时,自动调用)2)构造函数的函数名,和类名相同3)构造函数没有返回类型4)可以有多个构造函数(即函数重载形式)三,构造函数的种类1.默认构造函数2.自定义的构造函数3.拷贝构造函数4.赋值构造函数...原创 2021-12-30 16:52:06 · 4589 阅读 · 0 评论 -
C++:类的调用
#include <iostream>#include <string>#include <Windows.h>using namespace std;//定义“人类”class Human {public: //公有的, 公共的 void eat(); //类里面的方法,又称为成员函数 void sleep(); void work(); void play(); string getName(); int getAge(); int g原创 2021-12-30 16:19:51 · 4007 阅读 · 0 评论 -
C++中:无法访问 private 成员
#include <iostream>#include <string>#include <Windows.h>using namespace std;//定义“人类”class Human {public: //公有的, 公共的 void eat(); //类里面的方法,又称为成员函数 void sleep(); void work(); void play(); string getName(); int getAge(); int g原创 2021-12-30 16:03:53 · 2284 阅读 · 5 评论