C++ 总结笔记 <一>


一,定义类的对象

先定义一个类:
class A
{
public:
     A();
    virtual ~A();
...
...
};

类实现略。

用的时候:
A a;
a.成员函数;
a.成员变量;
a 就是一个对象。

也可以这样用:
A *a = new A;
a->成员函数;
a->成员变量;

注:
    A a;               //必须有相应的构造函数函数 比如  A(){},否则应这样定义 A a(10),它的构造函数为 A(int num){ };
    A* a;          //只是定义了一个指针,不论构造函数怎么样,都会编译过去的;
    A* a = new A(10);  //定义了一个对象指针,并进行了赋值,在最后要销毁的 delete a;

*********************************************************

二,类的组合:
  类的组合就是在一个类中定义另一个类,而不是继承,这样就可以在此类中使用定义的那个类的共用函数和数据;
  被定义的类里面如果有需要初始化的数据,那么在类的构造函数中初始化,如
      class Print{
          public:
                Print(int age,char* name){
                        animal = new Animal(age,name);    
                }   
                ~Print(){
    
                }   
                void print_str(){
                        animal->fun();
                }   
          private:
                Animal* animal;
     };


*********************************************************

三,类的继承
  类的继承就是一个类作为基类,被另一个类继承,如果子类想重新编写基类的一个函数,那么把基类的此函数写成 virtual ,即虚函数;
  若直接不想在基类中编写此函数,那么此函数这样写 virtual void func() = 0; 即纯虚函数;
  注:包含纯虚函数的类不能被实例化;

*********************************************************

四,类中数据的三个属性:
  private: 子类不能直接访问,通过父类的public函数访问;

*********************************************************

五,引用:
  直接传递对象名:
     一个对象作为实参,传递给一个函数,如果形参为对象名,那么对此对象进行复制拷贝,不会对此对象里面的数据进行操作;
    若是形参作为引用来使用,则传递的是此对象的地址,对形参操作就相当与对此对象操作;会对此对象里面的数据进行操作修改;
    注:若不想让形参修改,只是使用,则形参这样定义 const Animal&   实例代码如下:

    //        void reset(Print prin){           //此形参不能修改name的值;
    //        void reset(const Print& prin){    //此形参不要求修改name的值;编译报错;
        void reset( Print& prin){
                char buff[] = "halou";
                prin.name = buff;
        }
*********************************************************

六,C++中string的用法:
  string使用时需要加 <string> 头文件,初始化如 string str("hello world");
  string的大小判断  int size = str.size();
  string是否为空的判断  if(str.empty()){   };
  string的追加  str += " very good";

         /* 字符转换数字 */
        string sint = "123";
        int num = atoi(sint.c_str());
        cout<<num<<endl;



*********************************************************

七:C++中类内部定义新类,并使用;
    类内部的新类调用类内部的private的数据和函数来完成任务;
    新定义的类会在当前类内部作为private来使用;

    代码实例:
class Dog{
private:
        string name_d;
        class Print{
                public:
                        Dog* dog;
                        Print(Dog* dog):dog(dog){
    
                        }   
                        ~Print(){
    
                        }   
                        void print(){
                                dog->func();
                        }   
        };  
public:
        Print* print;
        void print_p(){
                print->print();
        }   
        Dog(string name):name_d(name){
                if(print == NULL)
                        print = new Print(this);
        }   
        ~Dog(){
    
        }   
        void func(){
                cout<<__func__<<endl;
        }   
};

int main(int argc,char** argv){
        string str("zhangsan");
        Dog dog(str);
        dog.print->print();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值