c 中類初始化賦值過程中字串作為引數的問題

2022-02-03 04:09:58 字數 1345 閱讀 5190

先看一段類**的定義:

#pragma once#include

using

namespace

std;

class

mycoach

;

#define _crt_secure_no_warnings#include 

"mycoach.h

"#include

using

namespace

std;

mycoach::mycoach(

char *_name,int age,const

char *expertise):age(age)

mycoach::~mycoach()

void

mycoach::print()

void mycoach::setfoodslike(char *foods)

void

mycoach::eat()

#define _crt_secure_no_warnings#include

#include

"mycoach.h

"using

namespace

std;

intmain()

輸出結果:

如果閱讀本篇文章的你,有使用其他物件導向程式設計語言的經歷,對於直接呼叫類名 物件名(初始化引數1,初始化引數2,初始化引數3.....)進行例項化的做法一定司空見慣

但偏偏作為從c有技術繼承的語言c++來說,實現乙個變數盛放字串,做法十分獨特-----c語言使用字元陣列盛放字串資訊,c和c++都用char* 變數名指向乙個字串,c++中單設立了乙個容器型別string存放字串......

如果你習慣上述例項化乙個物件的習慣,那麼在c++就要留意了,對於初始化時的字串,一定要選好變數型別,下面就各類變數選型帶來的問題予以列出

以本篇中的類為例:如果mycoach類的屬性name或者expertise這種字串被宣告為string型別,當然皆大歡喜,且容易想到,但是類成員方法print()中有大量cout輸出呼叫,string型別無法cout直接輸出,

結果是你不得不實現cout的多型,例如寫個ostrem&operator

<

char coachname[30] = "

陳培昌"

;char* name = coachname;

字串初始化賦值

在c語言中,字串是當做字元陣列來處理的 所以字串有兩種宣告方式,一種是字元陣列,一種是字元指標。1 直接逐個初始化字元陣列 字元陣列的初始化,最容易理解的方式就是逐個字元賦給陣列中各元素。char str 10 注意 如果花括號中提供的字元個數大於陣列長度,則按語法錯誤處理 若小於陣列長度,則只將這...

C結構體中字串初始化

小知識1 const char const char str 定義的是乙個指向常量的指標。如果str是區域性變數,則字串會隨著變數所在的函式的退出而自動釋放 如果str是全域性變數,則程式退出時才自動釋放。char strdup const char s include include includ...

C 列表初始化,字串初始化

列表初始化 int a 0 int a 全面應用 int a int a 0 預設初始化 定義變數時,沒有指定初值,則變數被預設初始化。定義函式體外的變數被初始化為0,函式體內部的內建型別變數不被初始化。字串初始化 string s1 string s2 s1 string s2 s1 string...