c++ 类初始化列表,构造函数,复制构造函数

来源:互联网 发布:l39h港行支持什么网络 编辑:程序博客网 时间:2024/06/01 11:31
//// Created by darren on 17-9-30.//#ifndef TEST_1_CLASS_TEST_H#define TEST_1_CLASS_TEST_H#include <iostream>#include <string.h>#include <stdlib.h>#include <assert.h>#include <errno.h>#include <stdio.h>using namespace std;class Human{public:    Human(char *name, char* &gender, int lWeight);    Human(Human &am);    int eat();    int run();    void setAttribute(int age, int heighe);    //attribute    inline void printf(){        cout<<"height"<<height<<endl;        cout<<"age:"<<age<<endl;        cout<<"weight:"<<weight<<endl;        cout<<"gender:"<<gender<<endl;        cout<<"myName:"<<myName<<endl;    }    ~Human();private:    int height;    int age;    char* myName;    char* &gender;    const int weight;public:    static int iNumber;        //在类外对static类型的数据成员进行初始化};#endif //TEST_1_CLASS_TEST_H
//// Created by darren on 17-9-30.//#include "1_class_test.h"using namespace std;int Human::iNumber =0;int Human::eat() {    cout << "we eat the food" << endl;    return 0;}int  Human::run() {    cout << "we running" << endl;}void Human::setAttribute(int sAge, int sHeighe) {    age = sAge;    height = sHeighe;}Human::Human(char *name, char *&lGender, int lWeight = 0) : gender(lGender), weight(lWeight) {    iNumber++;    cout << "name:" << name << "lGender:" << lGender << "lWeight:" << lWeight << endl;    cout << "new 构造函数被调用..." << endl;    myName = new char[strlen(name) + 1];    if (!myName) {        perror("myNmae new failed");        assert(0);    }    age = 18;    height = 172;    memcpy(myName, name, strlen(name));    cout << "myName:" << myName << "gender:" << gender << "weight:" << weight << endl;}Human::Human(Human &am):gender(am.gender),weight(am.weight) {    iNumber++;    cout << "复制构造函数被调用" << endl;    myName = new char[strlen(am.myName) + 1];    if (!myName) {        perror("myNmae new failed");        assert(0);    }    memcpy(myName, am.myName, strlen(am.myName));    cout << "my:" << myName << endl;    age = am.age;    height = am.height;}Human::~Human(){    if (myName) {        cout << "delete 析构函数被调用...%p" << myName << endl;        delete myName;    }}int main() {    char gg[5] = "nan";    char *gg1 = gg;    Human man("tianxuhong", gg1, 110);    Human human1 = man;    man.printf();    man.~Human();    human1.printf();    cout<<"object count:"<<Human::iNumber<<endl;    return 0;}
 



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 忘了闺蜜生日怎么办 把闺蜜生日忘了怎么办 忘了闺蜜的生日怎么办 一岁宝宝不吃菜怎么办 幼儿园教案虫子爬进耳朵怎么办 鼻子出血怎么办幼儿说课 英语记不住发音不准怎么办 幼儿园孩子拼音记不住怎么办 孩子总是记不住东西怎么办 走丢了怎么办小班教案 走丢了怎么办小班社会 数学加减个十分不清怎么办 孩子b和d分不清怎么办 小孩b和d分不清怎么办 高一的数学不会怎么办 农村小孩到市里上学怎么办 和外国人打官司输了怎么办 碰见爱说你的领导怎么办 小孩脾气爆一句话就生气怎么办 小孩眼睛哭肿了怎么办 大人吵架吓到宝宝了怎么办 小孩晚上睡觉不踏实怎么办 二宝美籍大宝怎么办 小孩一洗澡就哭怎么办 孩子去外地上学学籍怎么办 非婚生子父亲想要孩子怎么办 非婚生子孩子父亲找不到了怎么办 3岁半宝宝认字怎么办 上课注意力不集中老是发呆怎么办 海绵宝宝吃了会怎么办 宝宝误吞李子核怎么办 24个月宝宝不愿意说话怎么办 孩子凉着肚子吐怎么办 教宝宝说话不会说怎么办 2岁宝宝语言退化怎么办 两周宝宝嗓子哑怎么办 幼儿园孩子上课爱说话老师怎么办 一岁宝宝不会爬怎么办 孩子说话不太清楚怎么办 十一个月宝宝不爱吃饭怎么办 14个月宝宝不爱吃饭怎么办