Есть ли у встроенных типов конструкторы по умолчанию?

Прочитав эту статью, я заметил, что int () возвращает 0, потому что временное int инициализировано. и не потому, что int () вызывает конструктор по умолчанию для int . (Статья ошибочна, насколько я понимаю.)

Я также сказал, что примитивные (встроенные) типы нет конструкторов. Первоначальный автор попросил меня проверить Раздел $ 10.4.2 (TC ++ PL), в котором говорится, что

Встроенные типы также имеют конструкторы по умолчанию ($ 6.2.8)

. Но я все еще думаю, что утверждение «C ++ позволяет даже создавать -в типе (примитивные типы), чтобы иметь конструкторы по умолчанию ». ошибочен (согласно C ++ 03).

Я думаю, что Бьярн в TC ++ PL перепутал "конструктор, подобный нотации, т.е. () " с фактическим вызовом конструктора. Инициализация значений не была введена в то время, когда Бьярн писал книгу, верно? Так является ли текст в TC ++ PL неверным согласно C ++ 98 и C ++ 03?

Что вы думаете, ребята?

РЕДАКТИРОВАТЬ

Я лично спросил Бьярна (по почте) относительно некорректного текста в TC ++ PL, и это был его ответ

Я думаю, вы смешиваете «фактические вызовы конструктора» с концептуальным наличием конструктора. тип печати (f) print u "f =% s"% (f) Вот мой запуск программы: $ python x.py 'Recent / רשימת משתתפים. LNK' Traceback (...

Вот небольшая программа:

import sys

f = sys.argv[1]
print type(f)
print u"f=%s" % (f)

Вот мой запуск программы:

$ python x.py 'Recent/רשימת משתתפים.LNK'

Traceback (most recent call last):
  File "x.py", line 5, in 
    print u"f=%s" % (f)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 7: ordinal not in range(128)
$ 

Проблема в том, что sys.argv [1] думает, что получает строку ascii, которую он может не конвертирую в Unicode. Но я использую Mac с терминалом, полностью поддерживающим Unicode, поэтому x.py фактически получает строку Unicode. Как мне сообщить Python, что sys.argv [] является Unicode, а не Ascii? В противном случае, как мне преобразовать ASCII (в котором есть Unicode) в Unicode? Очевидные преобразования не работают.

14
задан jfs 24 February 2011 в 19:16
поделиться